package com.hserver.docker.service;

import com.github.dockerjava.api.model.Service;
import com.github.dockerjava.api.model.Swarm;
import com.github.dockerjava.api.model.SwarmNode;
import com.github.dockerjava.api.model.SwarmNodeAvailability;

import java.util.List;

/**
 * @author hxm
 */
public interface SwarmService {

    /**
     * 检查是否初始化了
     *
     * @return
     */
    Swarm checkSwarm();


    /**
     * 更新node
     * @param id
     */
    void updateSwarmNode(String id, SwarmNodeAvailability type);


    /**
     * 列表
     * @return
     */
    List<SwarmNode> listSwarm();

    /**
     * 集群服务列表
     * @return
     */
    List<Service> listSwarmService();


    /**
     * 进行初始化
     * @param address
     */
    String initSwarm(String address);


    /**
     * 添加节点地址
     * @param address1
     * @param address2
     */
    String addSwarm(String address1,String address2);


    /**
     * 强制解散集群
     */
    void disbandCluster();


    /**
     * 删除服务
     * @param service
     */
    void removeService(String service);

    /**
     * 离开集群
     * @param url
     */
    void removeNode(String url);

}
